import { notFound } from "next/navigation"; import type { Metadata } from "next"; import { getRepo, cloneUrl, BackendOffline } from "@/lib/api"; import { dec } from "@/lib/params"; import RepoNav from "@/components/RepoNav"; import CloneBox from "@/components/CloneBox"; import Offline from "@/components/Offline"; type Props = { children: React.ReactNode; params: Promise<{ repo: string }> }; export async function generateMetadata({ params }: { params: Promise<{ repo: string }> }): Promise { const { repo } = await params; return { title: dec(repo) }; } export default async function RepoLayout({ children, params }: Props) { const name = dec((await params).repo); let repo; try { repo = await getRepo(name); } catch (e) { if (e instanceof BackendOffline) return ; throw e; } if (!repo) notFound(); return (

{repo.name}

{repo.description &&

{repo.description}

}
{children}
); }